Congestion management of packet traffic at buffers in a communications system is important in as much as poor control can impact significantly on system performance. Management issues become a major concern when packet traffic includes a mix of packets from responsive traffic and non-responsive traffic.
Responsive traffic is typically generated by a source controlled by a responsive protocol. When packets are lost or excessively delayed, for example, due to congestion, a responsive protocol reduces the load in the attempt to match the available capacity. Transmission Control Protocol (TCP) is an example of a responsive protocol providing responsive traffic.
Non-responsive traffic is typically generated by a source controlled by a non-responsive protocol. When packets are lost or excessively delayed, a non-responsive protocol fails to detect or chooses to ignore this fact and, as a result, does not adjust the load accordingly. User Datagram Protocol (UDP) is an example of a non-responsive protocol providing non-responsive traffic.
A Random Early Detection (RED) algorithm is an active management mechanism for congestion avoidance. Contrary to a “tail drop” queue management scheme, this algorithm does not drop packets only when the queue overflows but it randomly discards packets earlier to notify sources about the incipient congestion. A Weighted RED (WRED) algorithm offers the same features as RED but it selectively drops packets according to their priorities.
The performance of a RED algorithm is believed to be better than the performance of traditional tail drop techniques. This is due to a better handling of bursty traffic and global synchronization. RED keeps the average queue size low, which can better accommodate occasional bursts of packets. RED also avoids synchronization of multiple TCP sources by avoiding (thanks to random discards) a situation in which several connections decrease their windows at the same time.
RED is widely implemented in routers. However, there are still outstanding issues with RED that have been extensively studied in the recent years. It has been shown that interactions between responsive TCP and non-responsive UDP traffic can bring instability to the system. Generally, the performance of TCP traffic is severely affected by UDP, if both types of traffic are handled by RED, in one memory partition. What happens is that UDP traffic gets its desired share of bandwidth, while TCP gets the rest—there is no fairness between the two types of traffic.
One solution to this problem is to hard-partition the memory, physically separating the two types of traffic. A TCP partition can use RED, while the UDP partition can use fixed thresholds to control the UDP traffic. This approach, however, can waste memory resources if one type of traffic is much more common than the other.
The Weighted RED algorithms presented in this application provide the solution in which the TCP and UDP traffic can be mixed together in a single partition, with a minimal impact on TCP traffic. In a sense, the two types of traffic are isolated even though they are stored in the same memory partitions. At the same time, complexity of the proposed algorithms is such that it is easy to implement them in hardware.